Skip to content

ci: Path-filter frontend and backend GitHub Actions jobs - #598

Merged
frankieramirez merged 2 commits into
mainfrom
chore/ci-path-filters
Aug 9, 2026
Merged

ci: Path-filter frontend and backend GitHub Actions jobs#598
frankieramirez merged 2 commits into
mainfrom
chore/ci-path-filters

Conversation

@frankieramirez

@frankieramirez frankieramirez commented Aug 9, 2026

Copy link
Copy Markdown
Owner

TLDR

Frontend-only PRs no longer pay for backend pytest/migrations (and vice versa). Required lint checks still report green when their side is unchanged so branch protection keeps working.

Description

  • Add a shared detect-changes workflow (dorny/paths-filter) that labels backend / frontend / e2e path sets; schedule and workflow_dispatch force a full run.
  • CI: Backend Lint and Frontend Lint & Build always run (required checks) but no-op when their paths did not change.
  • Test Suite: backend tests, migration dialects, and frontend tests skip when irrelevant; E2E smoke runs when either app surface changes and does not wait on a skipped opposite-side unit job.

Path sets (summary)

Filter Triggers
backend comicarr/, tests/, scripts/, deps lockfiles, alembic, generated config types, CI workflow files
frontend frontend/, CI workflow files
e2e frontend + backend app surfaces, Docker entrypoints, test workflow

No changeset — CI-only, no operator-visible app behavior.

Summary by CodeRabbit

  • CI Improvements
    • Automated checks now run selectively based on whether frontend, backend, migration, or end-to-end files changed.
    • Required checks remain visible even when no applicable changes are detected.
    • Scheduled and manually triggered runs continue to execute comprehensive validation.
    • Overall workflow summaries now clearly report detection results and test outcomes.

Skip expensive backend or frontend work when a PR only touches the
other side of the monorepo. Required checks (Backend Lint, Frontend
Lint & Build) still report success via no-op runs so branch protection
is not blocked. Schedule and workflow_dispatch keep a full matrix.
@changeset-bot

changeset-bot Bot commented Aug 9, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 9250e24

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@frankieramirez, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 57 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 6be935ef-7a8e-4e84-bd79-2ac8b00628b5

📥 Commits

Reviewing files that changed from the base of the PR and between b738f1d and 9250e24.

📒 Files selected for processing (3)
  • .github/workflows/ci.yml
  • .github/workflows/detect-changes.yml
  • .github/workflows/test.yml
📝 Walkthrough

Walkthrough

The workflows now detect backend, frontend, and E2E changes through a reusable workflow. CI and test jobs use these outputs to skip unrelated work, preserve required checks, control E2E execution, and report final results.

Changes

Conditional workflow execution

Layer / File(s) Summary
Reusable path detection
.github/workflows/detect-changes.yml
The reusable workflow exposes backend, frontend, and E2E outputs. Scheduled and manual runs force all outputs to true; pull requests and pushes use path filters.
CI job gating
.github/workflows/ci.yml
Frontend and backend lint jobs depend on path detection. They skip unchanged areas with successful summaries and run setup and validation steps only when relevant paths change.
Test and E2E gating
.github/workflows/test.yml
Backend, migration, frontend, smoke, and full E2E jobs use path detection. The summary job reports all results and handles skipped, failed, and cancelled jobs.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant GitHubEvent
  participant detect-changes
  participant CIWorkflow
  participant TestWorkflow
  participant ValidationJobs

  GitHubEvent->>detect-changes: trigger reusable path detection
  detect-changes-->>CIWorkflow: return backend and frontend outputs
  detect-changes-->>TestWorkflow: return backend, frontend, and e2e outputs
  CIWorkflow->>ValidationJobs: run applicable lint jobs
  TestWorkflow->>ValidationJobs: run applicable test and E2E jobs
  ValidationJobs-->>TestWorkflow: return job results
Loading

Poem

I’m a rabbit who checks each changed little trail,
Backend or frontend, I follow the tale.
E2E hops when its paths come in sight,
Unchanged jobs rest through the night.
Required checks still finish just right.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: adding path-based filtering to frontend and backend CI jobs.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/ci-path-filters

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/ci.yml:
- Around line 47-99: Add workflow-level permissions in .github/workflows/ci.yml
near the workflow declaration, granting only contents: read and pull-requests:
read before the frontend-ci commands run; make the same permissions change in
.github/workflows/test.yml near its workflow declaration. Do not modify
detect-changes.yml, which already defines the required permissions.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 2060d930-8c5c-4b0a-8889-b5cfb07af376

📥 Commits

Reviewing files that changed from the base of the PR and between d218a9f and b738f1d.

📒 Files selected for processing (3)
  • .github/workflows/ci.yml
  • .github/workflows/detect-changes.yml
  • .github/workflows/test.yml

Comment thread .github/workflows/ci.yml
Nested reusable jobs cannot request more token scopes than the caller
allows. That caused CI/Test Suite startup_failure and left required
checks stuck on "Expected — Waiting for status".
@frankieramirez
frankieramirez merged commit dcd9053 into main Aug 9, 2026
17 checks passed
@frankieramirez
frankieramirez deleted the chore/ci-path-filters branch August 9, 2026 23:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant